On utilisera les différentes variables du jeu de données "imdb_dataset" pour tester les différents outils de représentation des données.
import numpy as np
import csv
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
sns.set(color_codes = True)
from data import *
from scipy import stats
def statistiques(data):
mini = np.min(data)
maxi = np.max(data)
moy = np.mean(data)
med = np.median(data)
std = np.std(data)
Q1 = np.percentile(data, 25)
Q3 = np.percentile(data, 75)
print('Valeur minimale : ' + str(mini))
print('Valeur maximale : ' + str(maxi))
print('Valeur moyenne : ' + str(moy))
print('Valeur mediane : ' + str(med))
print('Ecart-type : ' + str(std))
print('Q1 : ' + str(Q1))
print('Q3 : ' + str(Q3))
DATA = Data('../data/movie_metadata.csv')
print(DATA.fieldnames)
N = 10000
x = np.random.normal(0,1, N)
plt.figure(figsize = (9,6))
plt.plot(x, 'o')
plt.xlabel('Indices',fontsize=20)
plt.ylabel('Réalisation d''une variable gaussienne',fontsize=20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.show()
statistiques(x)
y = pd.Series(x, name = "realisations d''une variable gaussienne")
plt.figure(figsize = (9,6))
sns.distplot(x, bins=min(int(np.sqrt(N)), 30), fit = stats.norm, kde= False);
#plt.title('Histogramme',fontsize=20)
plt.xlabel('Réalisations d''une variable gaussienne',fontsize=20)
plt.ylabel('Fréquences normalisées',fontsize=20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.show()
Ajustement du modèle paramétrique au sens des moindres carrés (minimisation de l'écart au carré entre la courbe estimée et l'histogramme (= distribution empirique)).
x = pd.Series(DATA.get_budget(), name = 'budget en $')
sns.distplot(x, bins=40, kde=False, fit = stats.gamma);
plt.title('Histogramme', fontsize = 18)
plt.xticks(fontsize = 18)
plt.yticks(fontsize = 18)
plt.xlabel('budget en $', fontsize = 18)
plt.show()
x = pd.Series(DATA.get_budget(), name = 'budget en $')
sns.distplot(x, bins=40, kde=False, fit = stats.norm);
plt.title('Histogramme', fontsize = 18)
plt.xticks(fontsize = 18)
plt.yticks(fontsize = 18)
plt.xlabel('budget en $', fontsize = 18)
plt.show()
x = pd.Series(DATA.get_budget(), name = 'budget en $')
sns.distplot(x, bins=40, kde=True);
plt.title('Histogramme', fontsize = 18)
plt.xticks(fontsize = 18)
plt.yticks(fontsize = 18)
plt.xlabel('budget en $', fontsize = 18)
plt.show()
x = pd.Series(DATA.get_imdb_score(), name = 'score')
hist, bins_ = np.histogram(x, bins = 30)
hist = hist*1./len(x)
centers = (bins_[1:] + bins_[:-1])/2.
plt.bar(centers, hist, width = 0.7*(centers[1] - centers[0]))
plt.title('histogramme', fontsize = 18)
plt.xticks(fontsize = 18)
plt.yticks(fontsize = 18)
plt.show()
plt.figure()
plt.plot(centers, np.cumsum(hist))
plt.title('frequences cumulées', fontsize = 18)
plt.xticks(fontsize = 18)
plt.yticks(fontsize = 18)
plt.show()

data = pd.Series(DATA.get_country(), name = "country")
qualitative_barplot(data,"country", figsize = (15,6), fontsize = 18)
# Transformation d'une donnée qualitative (language) en variable binaire "english"/"autre"
ind = (DATA.get_title_year() > 2010)
language = []
language_all = DATA.get_language()
for i in range(len(language_all)):
if language_all[i] != 'English':
language_all[i] = 'Other'
if ind[i]:
language.append(language_all[i])
# Sous ensemble de données : "score", "year", "language"
score = DATA.get_imdb_score()
year = DATA.get_title_year()
df = pd.DataFrame({"score":score[ind], "title_year":year[ind], "language":language})
plt.figure(figsize = (17,9))
sns.barplot(x="title_year", y = "score", hue = "language", data = df, ci = 'sd')
plt.xlabel("title_year",fontsize = 20)
plt.ylabel("score",fontsize = 20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.title('Estimation de la moyenne et écart-type de l''estimateur de la moyenne', fontsize = 20)
plt.show()
df = pd.DataFrame({"imdb_score":DATA.get_imdb_score(), "title_year":DATA.get_title_year(), "country":DATA.get_country()})
table = double_entree(df, "title_year", "country", figsize = (17,14), fontsize = 14)
table.plot(kind="bar", figsize=(17,14),stacked=True, fontsize = 14)
plt.show()
data = pd.Series(DATA.get_imdb_score(), name = 'score')
plt.figure(figsize =(10, 2))
sns.boxplot(x = data)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.xlabel("score", fontsize = 20)
plt.show()
N = len(data)
print('N = '+str(N))
med = np.median(data)
Q1 = np.percentile(data, 25)
Q2 = np.percentile(data, 50)
Q3 = np.percentile(data, 75)
print('Q1 = ' +str(Q1))
print('Q2 = ' +str(Q2) + ' et médiane : ' + str(med))
print('Q3 = ' +str(Q3))
# Transformation d'une donnée qualitative (language) en variable binaire "english"/"autre"
ind = (DATA.get_title_year() > 2010)
language = []
language_all = DATA.get_language()
for i in range(len(language_all)):
if language_all[i] != 'English':
language_all[i] = 'Other'
if ind[i]:
language.append(language_all[i])
# Sous ensemble de données : "score", "year", "language"
score = DATA.get_imdb_score()
year = DATA.get_title_year()
df = pd.DataFrame({"score":score[ind], "title_year":year[ind], "language":language})
plt.figure(figsize = (17,9))
sns.boxplot(x="title_year", y = "score", hue = "language", data = df)
plt.xlabel("title_year",fontsize = 20)
plt.ylabel("score",fontsize = 20)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(fontsize=20)
plt.show()
